package com.nanohadoop.yarn;

import java.util.Map;

/**
 * 资源调度器接口，定义了资源调度的核心算法
 * 策略模式的接口部分
 */
public interface ResourceScheduler {
    /**
     * 启动调度器
     */
    void start();

    /**
     * 停止调度器
     */
    void stop();

    /**
     * 注册节点管理器
     */
    void registerNodeManager(NodeManager nodeManager);

    /**
     * 提交应用程序
     */
    String submitApplication(String name, String user, Resource requiredResource, int numContainers);

    /**
     * 资源调度的核心方法
     */
    void schedule();

    /**
     * 完成应用程序
     */
    void completeApplication(String applicationId);

    /**
     * 获取应用程序
     */
    ApplicationMaster getApplication(String applicationId);

    Map<String, NodeManager> getNodeManagers();

    Map<String, ApplicationMaster> getApplications();
}